/******************************************************
Cours:   LOG121
Session: A2013
Groupe:  04
Projet: Laboratoire #4
Etudiant(e)s: Fredy Alexander Bonilla, Renaud Vincent, Simon Castro
                            
Professeur : Francis Cardinal
Nom du fichier: Tab.java
Date cree: 2013-12-01
Date dern. modif. 2013-12-01
*******************************************************
Historique des modifications
*******************************************************
*******************************************************/ 

import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/**
 * La classe Tab herite de JPanel. Son construteur creer des onglets de vues et 
 * les affiches. Elle contient une classe privee servant a determiner l'onglet
 * actif.
 * 
 * @author Renaud
 * @author Simon
 *
 */
public class Tab extends JPanel {

	private static final long serialVersionUID = 1L;
	
	//Attributs
	private JTabbedPane tabs;
	private Controleur controleur;
	
	/**
	 * Constructeur de la classe Tab, permettant de creer les onglet des vues
	 * respectives. 
	 * 
	 * @param modele
	 * @param taille
	 * @param controleur
	 */
	public Tab(Modele modele, Dimension taille, Controleur controleur)
	{
		super(new GridLayout(1, 1));
		this.controleur = controleur;
		
		JPanel vue1 = new TabImage(modele, taille, controleur, 0);
		JPanel vue2 = new TabImage(modele, taille, controleur, 1);

		this.tabs = new JTabbedPane(JTabbedPane.TOP);

		this.tabs.addTab("Vue 1",  vue1);
		this.tabs.addTab("Vue 2",  vue2);
		
		this.add(tabs);
		
		this.tabs.addChangeListener(new EcouteurTab());
	}
	
	/**
	 * La classe privee implemente ChangeListener, qui met a jour sur quel
	 * onglet on est actif. 
	 * 
	 * @author Simon
	 *
	 */
	private class EcouteurTab implements ChangeListener {

		@Override
		public void stateChanged(ChangeEvent e) {
			if(e.getSource() instanceof JTabbedPane){
				controleur.setTabIndexCourant(((JTabbedPane) e.getSource()).getSelectedIndex());
			}
		}	
	}
}
